<?php
declare (strict_types=1);

namespace App\Model;

use App\Casts\JsonArrayConvertCast;
use Hyperf\ModelCache\Cacheable;
use Hyperf\ModelCache\CacheableInterface;

/**
 * 产品分类表模型
 */
class Category extends Model implements CacheableInterface
{
    use Cacheable;

    const TABLE_NAME = 'categories'; //定义表名
    const ID = 'id';// 自增主键ID
    const NAME = 'name';// 分类名称
    const LOGO = 'logo';// 图片
    const IS_PARENT = 'is_parent';// 是否父级
    const LEVEL = 'level';// 层级数，第一级=1，第二级=2以此类推
    const PARENT_ID = 'parent_id';// 父级分类ID
    const PARENT_NAME = 'parent_name';// 父级分类名
    const DESC = 'keywords';// 分类说明Json
    const EN = 'en';// 英文
    const ZH = 'zh';// 中文
    const SLUGS = 'slugs';// slugs,英文逗号分割

    protected ?string $table = self::TABLE_NAME;

    public bool $timestamps = false;

    // 指定可批量赋值的属性，通过create赋值有用
    protected array $fillable = [
        self::NAME, self::LOGO, self::IS_PARENT, self::LEVEL, self::PARENT_ID, self::PARENT_NAME, self::DESC, self::EN, self::ZH, self::SLUGS
    ];

    // 应强制转换为指定类型的属性
    protected array $casts = [
        self::IS_PARENT => 'integer',
        self::LEVEL => 'integer',
        self::PARENT_ID => 'integer',
        self::DESC => JsonArrayConvertCast::class,
    ];
}